package ca.etsmtl.log660.entity;

import java.util.Iterator;
import java.util.Set;

public class Film {

	private int filmId;
	private String titre;
	private int anneeSortie;
	private String langueOrigine;
	private int duree;
	private Personne realisateur;
	private String resume;
	private String poster;
	
	private Set<Scenariste> scenaristes;
	private Set<Genre> genres;
	private Set<Pays> pays;
	private Set<Annonce> annonces;
	private Set<FilmActeur> acteurs;
	private Set<Inventaire> inventaires;
	private Set<CoteMoyenne> cotes;

	public Film(){
	}
	
	public int getFilmId() {
		return filmId;
	}
	
	public void setFilmId(int filmId) {
		this.filmId = filmId;
	}
	
	public String getTitre() {
		return titre;
	}
	
	public void setTitre(String titre) {
		this.titre = titre;
	}
	
	public int getAnneeSortie() {
		return anneeSortie;
	}
	
	public void setAnneeSortie(int anneeSortie) {
		this.anneeSortie = anneeSortie;
	}
	
	public String getLangueOrigine() {
		return langueOrigine;
	}
	
	public void setLangueOrigine(String langueOrigine) {
		this.langueOrigine = langueOrigine;
	}
	
	public int getDuree() {
		return duree;
	}
	
	public void setDuree(int duree) {
		this.duree = duree;
	}
	
	public Personne getRealisateur() {
		return realisateur;
	}
	
	public void setRealisateur(Personne realisateur) {
		this.realisateur = realisateur;
	}
	
	public String getResume() {
		return resume;
	}
	
	public void setResume(String resume) {
		this.resume = resume;
	}
	
	public String getPoster() {
		return poster;
	}
	
	public void setPoster(String poster) {
		this.poster = poster;
	}

	public Set<Genre> getGenres() {
		return genres;
	}

	public void setGenres(Set<Genre> genres) {
		this.genres = genres;
	}

	public Set<Scenariste> getScenaristes() {
		return scenaristes;
	}

	public void setScenaristes(Set<Scenariste> scenaristes) {
		this.scenaristes = scenaristes;
	}

	public Set<Pays> getPays() {
		return pays;
	}

	public void setPays(Set<Pays> pays) {
		this.pays = pays;
	}

	public Set<Annonce> getAnnonces() {
		return annonces;
	}

	public void setAnnonces(Set<Annonce> annonces) {
		this.annonces = annonces;
	}
	
	public Set<FilmActeur> getActeurs() {
		return acteurs;
	}

	public void setActeurs(Set<FilmActeur> acteurs) {
		this.acteurs = acteurs;
	}

	public Set<Inventaire> getInventaires() {
		return inventaires;
	}

	public void setInventaires(Set<Inventaire> inventaires) {
		this.inventaires = inventaires;
	}
	
	public Set<CoteMoyenne> getCotes() {
		return cotes;
	}

	public void setCotes(Set<CoteMoyenne> cotes) {
		this.cotes = cotes;
	}
	
	/**
	 * Directly get the average cote for this film
	 * @return
	 */
	public double getCote(){
		Iterator<CoteMoyenne> it = getCotes().iterator();
		if(it.hasNext()){			
			return getCotes().iterator().next().getCoteMoyenne();
		}else{
			return 0;
		}
	}

	@Override
	public String toString() {
		return this.getTitre()+"("+this.getAnneeSortie()+")";
	}
}
